package com.dangdang.service;

import java.util.List;
import java.util.Map;

import com.dangdang.domain.Book;
import com.dangdang.domain.Category;
import com.dangdang.domain.Product;

/**
 * 商品类别控制类
 * 
 * @author Wangpeihu
 * @team [Never give up]
 * @since JDK1.6(建议)
 * @date 2010-1-25
 */
public interface CatalogService {

	/** 图书的根分类 */
	public final static int BOOK_CAT = 1;

	/**
	 * 根据类别ID查询
	 * 
	 * @param id
	 * @param withSub
	 * @return
	 */
	public Category getCategoryById(Integer id, boolean withSub);

	/**
	 * 封装了查询条件
	 * 
	 * @return
	 */
	public Map<Integer, String> getMessageOrderOptions();

	/**
	 * 根据类别ID查询该类别所拥有的商品
	 * 
	 * @param catId
	 * @return
	 */
	public List<Product> findProductByCategoryId(Integer catId);

	/**
	 * 根据类别商品ID查询指定
	 * 
	 * @param id
	 * @return
	 */
	public Product findProductById(Integer productId);

	/**
	 * 根据父ID查询与该类别同等级的所有类别
	 * 
	 * @param parentId
	 */
	public List<Category> findCategoryByParentId(Integer parentId);

	/**
	 * 根据当前类别ID,指定的页数,指定的每页显示的条目数查找 指定的图书
	 * 
	 * @param catId
	 *            (该类别的ID)
	 * @param page
	 *            (页码)
	 * @param rowsPerPage
	 *            (每页显示的条目数)
	 * @return
	 */
	public List<Product> findProductByCategoryId(Integer catId, Integer page,
			Integer rowsPerPage, Integer order);

	/**
	 * 根据图书ID查询图书
	 * 
	 * @param bookId
	 * @return
	 */
	public Book findBookById(Integer bookId);

	/**
	 * 查询商品的总页数根据类别ID
	 * 
	 * @param cid
	 * @param rowsPerPage
	 * @return
	 */
	public int getProductTotalPageByCategoryId(Integer cid, Integer rowsPerPage);

	/**
	 * 根据关键字查找多个
	 * 
	 * @param likeKey
	 * @return
	 */
	public List<Product> findProductByLikeKey(String likeKey);

}
